The Internet is a well-known, global network of cooperatively interconnected computer networks. The World Wide Web portion of the Internet is a collection of server computers (referred to as “web sites”) on the Internet, which store documents that can be publicly accessed by computer users having a connection to the Internet.
World Wide Web (“web”) is used herein to refer generally to both (i) a distributed collection of interlinked, user-viewable documents (commonly referred to as web documents or web pages) that are accessible via the Internet, and (ii) the client and server software components which provide user access to such documents using standardized Internet protocols. Currently, the primary standard protocol for allowing applications to locate and acquire web documents is Hyper Text Transfer Protocol (HTTP), and the web pages are typically encoded using Hyper Text Markup Language (HTML). However, the terms “web” and “World Wide Web” are intended to encompass other markup languages and transport protocols that may be used in place of (or in addition to) HTML and HTTP.
A user at an individual web-based device (e.g., a workstation) may access a web page on the Internet using a graphical user interface software application known as a “web browser.” A variety of commercial web browsers are currently available. Well-known web browsers include Netscape's Navigator® and Microsoft's Internet Explorer®. Web browsers function to initiate connections via the Internet to responsive computers known as “web servers,” and to receive information from the web servers that is displayed on the user's workstation.
Typically, “clients” are applications that run on workstations and rely on servers to perform certain operations. For example, an e-mail client is an application that enables a workstation to send and receive e-mail via a local area network (LAN) server and an e-mail server. The term “server” is thus used herein to denote a linked computing device or group of such devices acting as a single unit to provide centralized services to one or more workstations. Clients may rely on servers for any number of functions, including interconnection with other devices, web access, resources (such as database storage of files), and, in some cases, processing power. Web servers respond to a web browser's request by transmitting a web page, or other types of web content. Web content, as used herein, is a set of executable instructions a server serves to a client and which is intended to be executed by the client so as to provide the client with certain functionality.
Given the advances in network technology, a demand for software and systems capable of taking full advantage of these advancements is growing. In this regard, many organizations dependent on information technology are presently attempting to manage complex network environments (e.g., distributed environments) that incorporate diverse hardware, software, applications, networks, and database systems. For example, the microprocessors of devices in a distributed environment may be totally dissimilar from each other. Also, device components of distributed environments often run entirely different operating systems and are entirely independent of each other but strive to cooperate in the sharing of data. The communications protocols used by such distributed environments thus tend to be industry standards, such as Systems Network Architecture (“SNA”) and TCP/IP. Still, modes of cooperation between networked devices are far from optimal.
There has been an increasing demand for software and systems capable of fully integrating and optimizing use of these disparate components. It would be desirable for these integrated systems, documents, and software to be hardware independent, support multiple users, and be based on a distributed architecture.
One particular situation where hardware independence would be desirable concerns printing via device drivers. A conventional, but inefficient, method of controlling and managing the flow of data to and from diverse input/output (I/O) devices in a distributed environment is through the use of device drivers. Device drivers are software programs that act as an interface between the device and programs that use the device. Generally, each device, such as a particular printer, has a set of specialized commands translatable by a driver for that device. In contrast, most programs access devices by using generic commands. The driver, therefore, accepts generic commands from a program and then translates them into specialized commands for the device.
Generally, peripheral input devices and peripheral output devices, such as printers, faxes, cameras, scanners, etc., interact with operating systems through the use of specific device driver software. The drivers form part of, and interact with, an operating system of a computing system. Certain basic device driver types commonly used with a personal computer, such as drivers for fixed and floppy disk drives, displays, and keyboards, are typically provided as a standard feature within the various operating systems. For many peripheral devices, however, specific drivers are created for each specific type of operating system. These specific drivers typically must be provided with a specific device driver supplied by the manufacturer of that specific input or output device. Thus, a device driver written for one operating system generally cannot be used with another operating system without extensive modifications. New peripheral devices thus require new drivers, which are installed in the operating systems in accordance with procedures specified by the particular operating system.
Universal device drivers have been created in an effort to eliminate or reduce the numerous differing device drivers required by various operating systems in running various peripheral devices. Generally, universal drivers incorporate most of the code necessary for devices in a particular class of devices (such as printers or modems) to communicate with the appropriate operating system components (such as the printer or communications subsystems). Most often, universal drivers are used in combination with mini-drivers, which contain any additional instructions needed to operate a specific device.
A second area in which the resources of a distributed environment are not efficiently utilized is in the realm of web-based image retrieval, manipulation, and utilization. Presently, systems and services exist which allow web users to extract and share various imaging information over the Internet.
On-line information systems typically include one computer system (the server) that makes information available so that other computer systems (the clients) can access the information. The server manages access to the information, which can be structured as a set of independent on-line services. The server and client communicate via messages conforming to a communication protocol and sent over a communication channel such as a computer network or through a dial-up connection as known.
The user of an on-line service uses a program on the client system to access the information managed by the on-line service. Possible user capabilities include viewing, searching, downloading, printing, and filing the information managed by the server.
There is a great need for a new development platform for distributed publishing that overcomes the various limitations described above. This need is especially pronounced and important in view of the rapid expansion of interest in the Internet.
A further area where distributed sharing and accessing of information would be beneficial concerns UNIX computing systems. UNIX computing systems comprise more than one implementation. For instance, Berkeley Software Distribution, HPUX, and AIX are three variations of the UNIX operating system. UNIX systems can be used as servers in a networked computing environment. However, sharing userconfigured information in a UNIX printing environment may be problematic.
A UNIX shell typically has access to a terminal. A terminal is a device that allows a user to send commands to a computer somewhere else. UNIX is designed to work with many different kinds of terminals. Input/output commands in UNIX read and write to a virtual terminal. A terminal might be a text-based terminal (called a “tty” for short) or a graphics-based terminal (e.g., “xterm”) and may vary in size. UNIX accounts for differing terminal configuration by defining terminal instances in a substantially object-oriented way. Printing from terminals may be accomplished by sending the print job via UNIX commands to a printer configured for the UNIX system. However, many users access UNIX systems by way of terminal emulators residing on personal computers having attached printers. Further, users often want to print a file that resides on the UNIX host but would rather that the print job be processed on the printer connected to the user's client machine.
To print from a UNIX terminal, the terminal communicates with the UNIX system to retrieve and format the requested information and then transmits the print job in page description language (“PDL”) commands that can be executed by the printer. A “ghostscript” utility may be used to convert UNIX files into the required PDL for an attached printer, as known in the art. Ghostscript is a relatively popular utility that converts Postscript to another PDL or image format. Ghostscript may be used to print Postscript data, which is generated by many UNIX applications to the printer of choice. In addition, Ghostscript is also used to support non-Postscript printers.
Alternatively, a terminal program may be used to generate a print job, by way of a terminal printing program. Essentially, terminal printing programs encase the print data, typically converted on the UNIX system, within “print data start” and “print data stop” terminal control commands. Thus, each file to be printed is accompanied by terminal control sequences that enable or disable the local printer in a pass-through printing configuration, but this method is cumbersome and limited. For instance, terminal control sequences that control the printer status must not occur in the print data that is sent to the printer, because the command will result in the printer starting or stopping during the print data transmission. Also, printing devices and settings are limited in this configuration.
Additionally, information extracted from the UNIX system may be limited in its ability to be configured. Because terminals are typically limited in terms of functionality, printing capability is often compromised. Irrespective of UNIX system type, printing functions are limited in a UNIX environment by the functionality of the terminal as well as the limited number of printers available to the system.
Further, many UNIX systems do not provide thorough output management and report distribution for documents they generate, making it common for print jobs to be lost, with little additional control over printing. Because UNIX systems assume that the delivery of output successfully reaches its intended locations and devices, users may be at risk if delivery of output is unsuccessful. Also, cryptic and confusing command line interrogation commands are often unused by less skilled users.
The difficulty in printing from UNIX terminals has been recognized in the art. The Common UNIX Printing System (“CUPS”) is a software package designed to allow users to easily print and monitor print jobs in a UNIX printing environment. CUPS provides web-based management and control of print jobs as well as network browsing for available printers. However, printing is still often limited to the output devices installed and configured for network and/or UNIX access. Although CUPS provides an improved system for managing printing in a UNIX environment, a UNIX user would benefit from the computing and output capability of the Internet. Also, if a method for utilizing the Internet for UNIX printing were available, the additional expense of printing management systems may not be necessary.
In addition, finished projects containing print jobs from different applications cannot be easily integrated prior to printing. Usually, each print job is generated by each application by way of the print driver and sent to a printer, or different printers. This method is inefficient and, furthermore, the disparate print jobs must be manually collated after printing. Although copy/paste functions of operating systems and applications somewhat alleviate this problem, it would be advantageous to assemble a single print job for printing from different applications by selecting files and previous print jobs to comprise the single print job.
Limitations and problems associated with UNIX terminals, print queues, print drivers, print job configuration and monitoring largely prevent UNIX terminal users from gaining possible benefits of high functional access to peripherals and computing power outside of a UNIX/LAN environment without additional print management systems. In addition, hardware and software independence is desirable, because networks as well as the Internet may comprise diverse computer platforms and systems.
As illustrated by the prior art, it is desirable to provide UNIX terminal printing clients with utmost functionality concerning peripherals, computing power, and imaging power available. Therefore, it would be of current interest to provide apparatus and methods for sharing imaging information between web-based services and devices in a distributed environment.